/** @type {import('next').NextConfig} */
const nextConfig = {
  images: {
    domains: ['server.illli.cc', 'i0.hdslb.com', 'localhost', 'illli.cc', 'assets.illli.cc', 'www.illli.cc'],
    formats: ['image/webp', 'image/avif'],
    dangerouslyAllowSVG: true,
    contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;",
    // 使用压缩的图像大小
    imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
    deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048],
  },
  webpack(config) {
    config.module.rules.push({
      test: /\.svg$/,
      use: [{
        loader: '@svgr/webpack',
        options: {
          typescript: true,
          ref: true
        }
      }]
    });
    
    // 优化打包配置
    if (process.env.NODE_ENV === 'production') {
      // 启用JS压缩
      config.optimization.minimize = true;
      
      // 启用代码分割
      config.optimization.splitChunks = {
        chunks: 'all',
        maxInitialRequests: 25,
        minSize: 20000,
        cacheGroups: {
          default: false,
          vendors: false,
          framework: {
            name: 'framework',
            test: /[\\/]node_modules[\\/](@react|react|react-dom|next|scheduler)[\\/]/,
            priority: 40,
            enforce: true,
          },
          lib: {
            test: /[\\/]node_modules[\\/]/,
            name(module) {
              // 添加安全检查，防止module.context为null或undefined
              if (!module || !module.context) {
                return 'npm.unknown';
              }
              
              const match = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/);
              if (!match || !match[1]) {
                return 'npm.unknown';
              }
              
              const packageName = match[1];
              return `npm.${packageName.replace('@', '')}`;
            },
            priority: 30,
          },
        },
      };
    }
    
    return config;
  },
  typescript: {
    // !! 警告: 仅用于构建通过，不推荐在生产环境中使用
    ignoreBuildErrors: true,
  },
  eslint: {
    // 警告: 仅用于构建通过，不推荐在生产环境中使用
    ignoreDuringBuilds: true,
  },
  // 启用静态优化
  reactStrictMode: true,
  // 启用HTTP压缩
  compress: true,
  // 页面缓存配置
  onDemandEntries: {
    // 页面保持活跃时间（毫秒）
    maxInactiveAge: 60 * 1000,
    // 同时缓存的页面数量
    pagesBufferLength: 5,
  },
  // 优化产物输出
  productionBrowserSourceMaps: false,
  // 禁用X-Powered-By头以提高安全性和减小响应大小
  poweredByHeader: false,
};

module.exports = nextConfig;